package com.cskaoyan.javase.string._0introduction;

/**
 * @description: String的概述
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/


import javax.xml.transform.Source;

/**
 * > String概述
 *      在Java语言中，所有类似“ABC”这样用双引号引起来的字符串，都是String类的对象
 *      String类位于java.lang包下，是Java语言的核心类
 *      String类提供了字符串表示、比较、查找、截取、大小写转换等各种针对字符串的操作
 *
 * String类的学习,主要学习String的两大特点:
 *      a.不可变性(String对象不可变)
 *      b.字符串常量池
 * 其次需要了解和大概知道它对象字符串操作的常用方法,具体使用时,可以再查阅资料
 *
 * 了解:
 *      String的构造方法,不常用,更常用的还是字面值常量或者一个String结果直接赋值
 *
 */
public class Demo {
    public static void main(String[] args) {
        //创建空字符串对象，需要注意的是null != ""
        //public String()
        String s = new String(); //""
        System.out.println(s.length());


        //把字节数组中的元素转换成字符串，字节数组中可以是字符，也可以是ASCII码值
        //public String(byte[] bytes)
        byte[] bytes = {97, 98, 99};
        String s1 = new String(bytes);
        System.out.println(s1);


        //同上，不过指定了开始下标和长度
        //public String(byte[] bytes,int offset,int length)
        String s2 = new String(bytes, 2, 1);
        System.out.println(s2);

        //同字节数组
        //public String(char[] value)
        ////同上，不过指定了开始下标和长度
        //public String(char[] value,int offset,int count)
        char[] chars = {'a', 'b', 'c'};
        String s3 = new String(chars);
        System.out.println(s3);
        System.out.println(chars);


        //套娃
        //public String(String original)
        String s4 = new String("hello");
        System.out.println(s4);
        String s5 = "hello";
        System.out.println(s4 == s5); //false
        String s6 = "hello";
        System.out.println(s5 == s6); //true

    }
}
